<!DOCTYPE html>
<html lang="en">

	<head>
		<meta charset="UTF-8">
		<title>1456468465</title>
		<script type="text/javascript">
			var person = {};
			Object.defineProperty(person, "name", {
				writable: false,
				value: "Nich"
			})
			alert(person.name);
			person.name = "Greg";
			alert(person.name);
		</script>
	</head>

	<body>
		<pre>
	function Person(){}
    
    Person.prototype = {
        constructor:Person,
        name:"Nic",
        age:"29",
        sayName:function(){
            alert(this.name)
        }
    };
    var friend1 = new Person();    //实例在这里
    
    friend1.sayName();
    
    function Person(){}
<hr />
    var friend2 = new Person();    //实例在这里
    Person.prototype = {
        name : "aty",
        sayName:function(){
            alert(this.name);
        }
    };

    friend2.sayName();
	</pre>
		<p>俩者的区别在于,实例是否在重写对象之前.</p>
		<p>两端代码唯一的区别就是实例在原型对象重写之前还是之后。 第一段重写后再创建实例，此时实例指向改写后的原型对象，所以能调用到原型中的sayName()。 第二段创建实例后再重写，此时实例还是指向刚开始的原型对象。重写原型对象后会将 之前原型对象 的属性和方法全部清除，所以实例访问不到sayName()。</p>
	</body>

</html>